const fs = require("fs");
const path = require("path");
const { parseFile, selectCover } = require("music-metadata");
// const { ID3Writer } = require("browser-id3-writer");
var readlineSync = require("readline-sync");
// const { writeTags } = require("node-id3");
// console.log("writeTags", writeTags);
const NodeID3 = require("node-id3");
// NodeID3.write({ title: "新标题" }, 'file.mp3');
// const ID3Writer = require("browser-id3-writer").ID3Writer;
// console.log("ID3Writer", ID3Writer);
// console.log(require.resolve("browser-id3-writer")); // 检查模块路径

let names = [
  "BOBO - 光荣.mp3",
  "GALA - 水手公园.mp3",
  "Jam - 七月上.mp3",
  "July (줄라이) - My Soul.mp3",
  "m - Komorebi - taku.mp3",
  "MC梦 (MC몽) - 죽을 만큼 아파서.mp3",
  "merry - 久石让 (ひさいし じょう) - go - round of life (人生旋转木马).mp3",
  "Michael Jackson - Beat It.mp3",
  "Queen (皇后乐队) - Bohemian Rhapsody.mp3",
  "Rauf & Faik - колыбельная (Kolybel'naja).mp3",
  "Richard Mayner - Recuerdos de Infancia.mp3",
  "S.H.E - Ring Ring Ring.mp3",
  "S.H.E - Super Star.mp3",
  "S.H.E - 中国话.mp3",
  "Santiano - Wellerman.mp3",
  "Saykoji - Rasa Sayange (Remix).mp3",
  "t.A.T.u. - Loves Me Not.mp3",
  "T.H.P - 爱与诺言.mp3",
  "The One (더원) - 爱你的宿命.mp3",
  "一只白羊 - 遇见你就像天空的云.mp3",
  "丸子呦 - 广寒宫.mp3",
  "久石让 - The Sun Also Rises.mp3",
  "久石让 - あの夏へ.mp3",
  "乌兰托娅 - 套马杆.mp3",
  "乌梅子酱 - 李荣浩.mp3",
  "乌龟组合 (거북이) - 빙고.mp3",
  "乔洋 - 卑微的承诺.mp3",
  "于果 - 侧脸.mp3",
  "伊藤幸子 (伊藤サチコ) - いつも何度でも.mp3",
  "伍佰 & China Blue - Last Dance.mp3",
  "伍佰 & China Blue - 挪威的森林.mp3",
  "伍佰 & China Blue - 梦醒时分.mp3",
  "伍佰 & China Blue - 突然的自我.mp3",
  "傅如乔 - 在草地上肆意奔跑.mp3",
  "元若蓝 - 爱x无限大.mp3",
  "入戏太深 - 马旭东.mp3",
  "刘可 - 寂寞才说爱.mp3",
  "劲歌_ 金曲2(情歌王) - 古巨基.mp3",
  "单小源 - 溜啊留.mp3",
  "卦者灵风 - 阳光开朗大男孩.mp3",
  "双笙 (陈元汐) - 女孩你为何踮脚尖.mp3",
  "古巨基 - 劲歌. 金曲2 (情歌王).mp3",
  "叶炫清 - 九张机.mp3",
  "吴艾伦 - 古灵精怪.mp3",
  "呆小兔 - 皆大欢喜.mp3",
  "周林枫 - 假象.mp3",
  "周林枫 - 阿嬷.mp3",
  "周林枫 - 阿嬷 (爱国版).mp3",
  "周深 - 小美满.mp3",
  "和田薫 - 時代を越える想い I.mp3",
  "大杉久美子 - ドラえもんのうた.mp3",
  "大江大河2电视剧主题曲 – 周深 - 和光同尘.mp3",
  "子尧（阮洪尧） - 我曾爱过一个人.mp3",
  "孙子涵 - 唐人.mp3",
  "孙子涵 - 连借口都没有.mp3",
  "孙燕姿 - 咕叽咕叽.mp3",
  "孙语赛 - 不仅仅是喜欢.mp3",
  "安子与九妹乐队 - 小嫦娥.mp3",
  "宋盐球 - 享受缺德人生.mp3",
  "封茗囧菌 - 安娜的橱窗.mp3",
  "小峰峰陈峰 - 伤之恋.mp3",
  "崔子格 - 卜卦.mp3",
  "布林Sr - 亡灵序曲 最终版.mp3",
  "庾澄庆 - 春泥.mp3",
  "张信哲 - 信仰.mp3",
  "张卫 - 济宁好孩子.mp3",
  "张学友 - I Love You.mp3",
  "张学友 - 烦恼歌.mp3",
  "张学友 - 饿狼传说.mp3",
  "张小只ya - 奔跑的光.mp3",
  "张惠妹 - 人质.mp3",
  "张杰 - 三生三世.mp3",
  "张杰 - 剑心.mp3",
  "张杰 - 逆战.mp3",
  "张碧晨 - 笼.mp3",
  "张远喆 - 不配做你男朋友.mp3",
  "张震岳 - 思念是一种病.mp3",
  "弦子 - 不甘.mp3",
  "懒芽芽 - 轻舟已撞大冰山.mp3",
  "曲婉婷 - Jar Of Love.mp3",
  "朴树 - 白桦林.mp3",
  "李克勤 - 护花使者.mp3",
  "李慧珍 - 爱死了昨天.mp3",
  "李荣浩 - 麻雀.mp3",
  "李行亮 - 愿得一人心.mp3",
  "李贞贤 (이정현) - 와.mp3",
  "杨丞琳 - 雨爱.mp3",
  "杨宗纬 - 一次就好.mp3",
  "杨宗纬&宝石Gem&王宇宙Leto - 若月亮没来(Live).mp3",
  "杨钰莹 - 桃花运.mp3",
  "林宥嘉 - 说谎.mp3",
  "林生祥 - 面会菜.mp3",
  "柯柯柯啊 - 樱花树下的约定.mp3",
  "桃花笑 - 锦零.mp3",
  "梁博 - 男孩.mp3",
  "梁静茹 - 爱你不是两三天.mp3",
  "欢子 - 心痛2009.mp3",
  "毛省曈 - 小生在他乡.mp3",
  "江语晨 - 最后一页.mp3",
  "海伦 - 游山恋.mp3",
  "潘广益 - 好想再爱你.mp3",
  "烟把儿乐队 - 纸短情长.mp3",
  "燕无歇 - 蒋雪儿.mp3",
  "王一佳 - 我生来自由.mp3",
  "王媛渊 - 三妻四妾.mp3",
  "王小帅 - 哭泣站台.mp3",
  "王强 - 秋天不回来.mp3",
  "王心凌 - Da Da Da.mp3",
  "王心凌 - 我会好好的.mp3",
  "王心凌 - 那年夏天宁静的海.mp3",
  "王招君 - 任素汐.mp3",
  "王杰 - 我是真的爱上你.mp3",
  "王菲 - 如愿.mp3",
  "王菲 - 红豆.mp3",
  "王靖雯 - 沦陷.mp3",
  "王鹤铮 - 爱我就跟我走.mp3",
  "童可可 - 欠我的梦.mp3",
  "筷子兄弟 - 我一定要得到你.mp3",
  "罗志祥 - 狐狸精.mp3",
  "罗百吉 - I Miss You.mp3",
  "美美jocie - 什么态度.mp3",
  "群星 - 两只蝴蝶 庞龙.mp3",
  "胜屿 - 我们说好的.mp3",
  "胡夏 - 羞答答的玫瑰静悄悄地开.mp3",
  "胡艾彤喂猪吗 - 千年寒冰.mp3",
  "花僮 - 笑纳.mp3",
  "苦笑SAMA - 卡农Canon.mp3",
  "草蜢 - Ba Ba Ba.mp3",
  "萧敬腾 - 王妃.mp3",
  "萨顶顶 - 咚巴拉.mp3",
  "蒋雪儿 - 谁在意我流下的泪.mp3",
  "蓝心羽 - 星空剪影.mp3",
  "蔡依林 - Love Love Love.mp3",
  "蔡依林 - 海盗.mp3",
  "蔡依林 - 看我72变.mp3",
  "蔡黄汝 - 迷人的危险.mp3",
  "虞兮叹 - 闻人听書_.mp3",
  "西罕 - 星河万里.mp3",
  "谢军 - 那一夜.mp3",
  "赵希予 - 星光派对.mp3",
  "赵希予 - 落日星空.mp3",
  "赵雷 - 我们的时光.mp3",
  "辉星 (휘성) - Insomnia (불면증).mp3",
  "邱永传 - 十一年.mp3",
  "邵雨涵 - 快乐阿拉蕾.mp3",
  "郁可唯 - 时间煮雨.mp3",
  "郑融 - 一事无成.mp3",
  "金贵晟 - 虹之间.mp3",
  "钟洁 - 分手假期.mp3",
  "阿YueYue - 云与海.mp3",
  "阿悠悠 - 一曲相思.mp3",
  "阿杜 - 撕夜.mp3",
  "陈慧娴 - 光阴的故事.mp3",
  "陈旭 - 哥只是个传说.mp3",
  "陈柯宇 - 生僻字.mp3",
  "陈楚生 - 风起时，想你.mp3",
  "陈雪凝 - 童话镇.mp3",
  "雷诺儿 - 别在我离开之前离开.mp3",
  "颜小健 - 朱丽叶的秋天.mp3",
  "颜小健 - 解药.mp3",
  "风小筝 - 神度.mp3",
  "马克西姆 - 克罗地亚狂想曲.mp3",
  "马頔 - 南山南.mp3",
  "高安&纳兰珠儿 - 花桥流水.mp3",
  "魏新雨 - 余情未了.mp3",
  "魏新雨 - 恋人心.mp3",
  "黄龄 - 夜舞.mp3",
];

async function processMP3Files() {
  let mp3list = [],
    filesIn = [];
  const files = fs.readdirSync(path.join("./")).filter((f) => {
    // console.log(f);
    // return f.endsWith(".mp3");
    if (f == "default") {
      //
      try {
        let min = fs.readdirSync(path.join("./", f)).filter((f) => {
          // console.log(f);
          //   return f.endsWith(".mp3");
          if (f.indexOf(".mp3") != -1) {
            return true;
          } else {
            return false;
          }
        });
        for (let k in min) {
          mp3list.push(min[k]);
          min[k] = {
            p: path.join("./", f, min[k]),
            name: min[k],
          };
        }
        filesIn.push(...min);
      } catch (error) {}
    }
  });
  //   console.log("mp3list", mp3list);
  //   fs.writeFileSync(
  //     path.join("./", "names.json"),
  //     JSON.stringify(mp3list, null, 2)
  //   );
  //   return;
  //   console.log("files", filesIn, mp3list);
  for (let k in filesIn) {
    let file = filesIn[k];
    // console.log("file", file);
    // if (k >= 1) return;
    // if (names.indexOf(file.name) == -1) continue;

    try {
      // 读取元数据
      const metadata = await parseFile(file.p);
      console.log(`\n文件名: ${file.name} ${file.p}`);
      console.log(`当前标题: ${metadata.common.title || "无标题"}`);

      var msg = 1;
      //   readlineSync.question(`1? `);
      if (msg == 1) {
        // // 调转位置
        let name = file.name.replace(".mp3", "");
        // name = name.split("-");
        // if (!name[1]) {
        //   //如果没有换成 – -
        //   name = name[0].split("–");
        //   if (!name[1]) {
        //     //如果还是没有
        //     console.log("–", file.name, "not - —");
        //     continue;
        //   }
        // }
        // name[0] = name[0].trim();
        // name[1] = name[1].trim();
        // let d = name[1];
        // name[1] = name[0];
        // name[0] = d;
        // name = name.join(" - ");
        // 写入新元数据
        NodeID3.write({ title: name }, file.p);
        // let newPath = path.join(file.p, "../", name + ".mp3");
        // fs.renameSync(file.p, newPath);
        // try {
        //   let lp = file.p.replace(".mp3", ".lrc");
        //   let lnp = newPath.replace(".mp3", ".lrc");
        //   console.log(lp, lnp);
        //   fs.renameSync(lp, lnp);
        // } catch (error) {
        //   console.log(file.name, "not gc");
        // }
        // writeTags(file.p, {
        //   title: name,
        // });
        // const writer = new ID3Writer(fs.readFileSync(file.p));
        // writer.setFrame("TIT2", name.join("-"));
        // fs.writeFileSync(file.p, writer.addTag());
        console.log("name c :", name);
      }
      //   // 修改标题示例（实际使用时可改为用户输入）
      //   const newTitle = `修改后的_${metadata.common.title || "新标题"}`;

      //   // 写入新元数据
      //   const writer = new ID3Writer(fs.readFileSync(file));
      //   writer.setFrame("TIT2", newTitle);
      //   fs.writeFileSync(file, writer.addTag());

      //   console.log(`已更新标题为: ${newTitle}`);
    } catch (err) {
      console.error(`处理文件 ${file} 时出错:`, err.message);
    }
  }
  //   for (const file of files) {
  //     try {
  //       // 读取元数据
  //       const metadata = await parseFile(file);
  //       console.log(`\n文件名: ${file}`);
  //       console.log(`当前标题: ${metadata.common.title || "无标题"}`);

  //       //   // 修改标题示例（实际使用时可改为用户输入）
  //       //   const newTitle = `修改后的_${metadata.common.title || "新标题"}`;

  //       //   // 写入新元数据
  //       //   const writer = new ID3Writer(fs.readFileSync(file));
  //       //   writer.setFrame("TIT2", newTitle);
  //       //   fs.writeFileSync(file, writer.addTag());

  //       //   console.log(`已更新标题为: ${newTitle}`);
  //     } catch (err) {
  //       console.error(`处理文件 ${file} 时出错:`, err.message);
  //     }
  //   }
}

processMP3Files();
